/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.latesis.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author Alan -  Desarrollo
 */
@Entity
@Table(name = "TBL_CLIENTE")
public class ClienteBean implements Serializable{
    
    private Long id;    
    private String nombres;    
    private String apellidoPaterno;    
    private String apellidoMaterno;    
    private String correo;        
    private String tipoDocumento;    
    private String numeroDocumento;   
    private String tipoCliente;    
    private String estado;        
    private String observacion;        
    private String sexo;   
    private List<String> telefonos;
    private List<DireccionClienteBean> direcciones;   
    private List<ServicioBean> servicios;
    
    public ClienteBean(){
        telefonos=new ArrayList<String>();
        direcciones=new ArrayList<DireccionClienteBean>();
        servicios = new ArrayList<ServicioBean>();
    }
    
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    public Long getId() {
        return id;
    }

    @Column(name="nombres",nullable = false,length = 80)
    public String getNombres() {
        return nombres;
    }

    @Column(name="apellidoPaterno", nullable = true, length = 20)
    public String getApellidoPaterno() {
        return apellidoPaterno;
    }

    @Column(name="apellidoMaterno", nullable = true, length = 20)
    public String getApellidoMaterno() {
        return apellidoMaterno;
    }

    @Column(name="correo",nullable=true,length = 30)
    public String getCorreo() {
        return correo;
    }

    @Column(name="tipdoc",length = 1, nullable = true)
    public String getTipoDocumento() {
        return tipoDocumento;
    }
    
    @Column(name="numdoc",length = 11, nullable = true)
    public String getNumeroDocumento() {
        return numeroDocumento;
    }
    
    @Column(name="tipoCliente",nullable=false,length = 1)
    public String getTipoCliente() {
        return tipoCliente;
    }

    @Column(name="estado",length = 1)
    public String getEstado() {
        return estado;
    }

    @Column(name = "observacion", length = 400, nullable = true)
    public String getObservacion() {
        return observacion;
    }

    @Column(name="sexo",length = 1, nullable = true)
    public String getSexo() {
        return sexo;
    }

    @ElementCollection(fetch = FetchType.LAZY)
    @CollectionTable(name="TBL_TELEFONO_CLIENTE", joinColumns=@JoinColumn(name="clienteId"))
    @Column(name="telefono")
    public List<String> getTelefonos() {
        return telefonos;
    }

    @OneToMany(fetch = FetchType.LAZY, mappedBy="cliente")
    public List<DireccionClienteBean> getDirecciones() {
        return direcciones;
    }
    
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "cliente")
    public List<ServicioBean> getServicios() {
        return servicios;
    }
    
    public void setId(Long id) {
        this.id = id;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public void setApellidoPaterno(String apellidoPaterno) {
        this.apellidoPaterno = apellidoPaterno;
    }

    public void setApellidoMaterno(String apellidoMaterno) {
        this.apellidoMaterno = apellidoMaterno;
    }

    public void setCorreo(String correo) {
        this.correo = correo;
    }

    public void setTipoDocumento(String tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    public void setNumeroDocumento(String numeroDocumento) {
        this.numeroDocumento = numeroDocumento;
    }

    public void setTipoCliente(String tipoCliente) {
        this.tipoCliente = tipoCliente;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public void setTelefonos(List<String> telefonos) {
        this.telefonos = telefonos;
    }

    public void setDirecciones(List<DireccionClienteBean> direcciones) {
        this.direcciones = direcciones;
    }
    
    public void setServicios(List<ServicioBean> servicios) {
        this.servicios = servicios;
    }
    
}
